import { getDictList, getServeTime} from '@/api'

export default {
  getDictsList(dictType, value) {
    let params = {
      pageNum: 1,
      pageSize: 10000,
      dictType
    }
    getDictList(params).then(res=>{
      if (res.data.code == 0) {
        const { dictDataList } = res.data.data;
        let arr = []
        dictDataList.forEach((item)=>{
          arr.push({
            label: item.dictLabel,
            value: item.dictValue
          })
        })
        value = arr
      }
    })
  },
  // 名称校验，只能输入中英文
  NameValidator(rule, value, callback, num, name){
    // if (!value) {
    //   callback(new Error(`请输入${name}`));
    // } else if (!/^[a-zA-Z\u4e00-\u9fa5]+$/.test(value)) {
    //   callback(new Error("只能输入中英文"));
    // } else {
    //   var len = 0;
    //   for (var i = 0; i < value.length; i++) {
    //     if (value[i].match(/[^\x00-\xff]/ig) != null) {//全角
    //       len += 2; //如果是全角，占用两个字节
    //     }
    //     else{
    //       len += 1; //半角占用一个字节
    //     }
    //   }
    //   if(len>num*2){
    //     callback(new Error(`最多输入${num}个汉字,当前长度为${len/2}`));
    //   }else{
    //     callback();
    //   }
    // }
  },
  // 应用标识校验，英文，下划线，最大50英文字符
  appKeyValidator(rule, value, callback, name) {
    if (!value) {
      callback(new Error(`请输入${name}`));
    } else if (!/^[A-Z_]{1,50}$/.test(value)) {
      callback(new Error("只能输入大写英文及下划线，且不能大于50英文字符"));
    } else {
      callback();
    }
  },
  // 校验，中英文，数字，下划线，最大50英文字符
  permissionGroupName(rule, value, callback, num, name) {
    // if (!value) {
    //   callback(new Error(`请输入${name}`));
    // } else if (!/^[a-zA-Z0-9\u4e00-\u9fa5]+$/.test(value)) {
    //   callback(new Error("只能输入中英文数字"));
    // } else {
    //   var len = 0;
    //   for (var i = 0; i < value.length; i++) {
    //     if (value[i].match(/[^\x00-\xff]/ig) != null) {//全角
    //       len += 2; //如果是全角，占用两个字节
    //     }
    //     else{
    //       len += 1; //半角占用一个字节
    //     }
    //   }
    //   if(len>num*2){
    //     callback(new Error(`最多输入${num}个汉字,当前长度为${len/2}`));
    //   }else{
    //     callback();
    //   }
    // }
  },
  // 校验，小写英文，下划线，最大50英文字符
  permissionGroupCode(rule, value, callback, name) {
    if (!value) {
      callback(new Error(`请输入${name}`));
    } else if (!/^[a-z_]{1,50}$/.test(value)) {
      callback(new Error("只能输入小写英文及下划线，且不能大于50英文字符"));
    } else {
      callback();
    }
  },
  // 校验，小写英文，数字，下划线，最大50英文字符
  pageCode(rule, value, callback, name, type) {
    if (!value) {
      callback(new Error(`请输入${name}`));
    } else if (!/^[a-z0-9_]{1,50}$/.test(value)) {
      callback(new Error("只能输入小写英文数字及下划线，且不能大于50英文字符"));
    } else if (type) {
      if (type == 1 && /^(?!p_page_).*/.test(value)) { // 页面
        callback(new Error(`页面权限，必须是”p_page_“开头`));
      } else if (type == 2 && /^(?!p_btn_).*/.test(value)) { // 资源
        callback(new Error(`资源权限，必须是”p_btn_“开头`));
      } else if (type == 3 && /^(?!p_fun_).*/.test(value)) { // 功能
        callback(new Error(`功能权限，必须是”p_fun_“开头`));
      }
    } else {
      callback();
    }
  },
  // 应用标识校验，大写英文，下划线，最大50英文字符
  validator1(rule, value, callback, name) {
    if (!value) {
      callback(new Error(`请输入${name}`));
    } else if (!/^[A-Z0-9_]{1,50}$/.test(value)) {
      callback(new Error("只能输入大写英文数字及下划线，且不能大于50英文字符"));
    } else {
      callback();
    }
  },
  // 0-65536
  validator2(rule, value, callback) {
    if (!value) {
      callback();
    } else {
      if(!/^[0-9]/.test(value)) {
        callback(new Error("只能输数字"));
      }else if (value > 65536 || value < 0) {
        callback(new Error("只能输入0-65536之间数据"));
      } else {
        callback();
      }
    }
  },
  // 表格序号
  indexMethod(index, currentPage, curPageSize){
    return index + (curPageSize*(currentPage-1) + 1)
  },
  // 失效时间校验
  async validateExpiresTime(rule, value, callback, startTime) {
    if (!value) {
      callback(new Error(`请选择失效时间`));
    }else if(new Date(value).getTime()<new Date(startTime).getTime()){
      callback(new Error("不能小于生效时间"));
    }else {
      callback();
    }
  },
   // 失效时间校验
   async userTime(rule, value, callback,name, startTime) {
    if (!value) {
        callback(new Error(`请输入${name}`));
    }else if(new Date(value).getTime()<new Date(startTime).getTime()){
       callback(new Error("不能小于生效时间"));
   }else {
       callback();
   }
},
}
